// 目录删除之异步实现
const fs = require('fs')
const path = require('path')

/**
 * 自定义一个函数，接收一个路径，执行删除操作
 * 1. 判断当前传入的路径是文件还是路径，是文件，则删除文件
 * 2. 是路径，则继续读取目录中的内容，然后再执行删除操作
 * 3. 把删除行为定义为一个函数，以递归的方式进行复用
 * 4. 将当前的名称拼接成在删除时可使用的路径
 */
function  myRmdir (dirPath, cb) {
  // 判断当前 dirPath 的类型
  fs.stat(dirPath, (err, statObj) => {
    if (statObj.isDirectory()) {
      // 目录 --> 继续读取
      fs.readdir(dirPath, (err, files) => {
        let dirs = files.map(item => {
          return path.join(dirPath, item)
        })
        let index = 0;
        function next () {
          if(index === dirs.length){
            fs.rmdir(dirPath,cb)
            return
          }
          let current = dirs[index++]
          myRmdir(current, next)
        }
        next()
      })
    } else {
      // 文件 --> 直接删除
      fs.unlink(dirPath, cb)
    }
  })
}

myRmdir('tmp', () => {
  console.log('删除成功')
})
